package cn.tedu;

import java.sql.*;
import java.util.Scanner;

public class Demo02 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入用户名");
        String username = sc.nextLine();
        System.out.println("请输入密码");
        String password = sc.nextLine();
        //获取连接
        try(Connection conn = DBUtils.getConn();) {//获取连接对象
//            Statement s = conn.createStatement();//获取执行SQL语句对象
//            ResultSet rs = s.executeQuery(
//                    "select count(*) from user where username='" +
//                            username + "'and password='" + password + "'");
//            rs.next();//游标往下移,不管是否登录成功  都需要游标移动

            //解决SQL注入的问题 preparedStatement带有预编译的执行SQL语句的对象
            String sql =
                    "select count(*) from user where username=? and password=?";
            //预编译的对象在创建时将SQL语句进行编译此时用户输入内容还不在其中
            //编译完之后相当于把SQL语句中的逻辑部分锁死,用户输入的值只能以值得形式添加到
            //SQL语句中,这样就能避免原来SQL语句中的逻辑被修改
            PreparedStatement ps = conn.prepareStatement(sql);
            //替换掉原来SQL语句中的?   1和2代表的是?的位置
            ps.setString(1,username);
            ps.setString(2,password);
            //执行查询SQL语句   执行查询是不再使用SQL语句
            ResultSet rs = ps.executeQuery();
            rs.next();//游标往下移,不管是否登录成功  都需要游标移动
            int count = rs.getInt(1);
            if (count>0){
                System.out.println("登录成功!");
            }else {
                System.out.println("用户名或密码错误!!!");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
